package com.ruoyi.info.service.impl;

import java.util.List;
import java.util.Map;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.info.domain.vo.CarLocationVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import com.ruoyi.info.mapper.VinfoCarMapper;
import com.ruoyi.info.domain.VinfoCar;
import com.ruoyi.info.service.IVinfoCarService;

import javax.annotation.Resource;

/**
 * 车辆信息Service业务层处理
 *
 * @author oy
 * @date 2022-12-16
 */
@Service
public class VinfoCarServiceImpl implements IVinfoCarService
{
    @Resource
    private VinfoCarMapper vinfoCarMapper;

    /**
     * 查询车辆信息
     *
     * @param carId 车辆信息主键
     * @return 车辆信息
     */
    @Override
    public VinfoCar selectVinfoCarByCarId(Long carId)
    {
        return vinfoCarMapper.selectVinfoCarByCarId(carId);
    }

    /**
     * 查询车辆信息列表
     *
     * @param vinfoCar 车辆信息
     * @return 车辆信息
     */
    @Override
    public List<VinfoCar> selectVinfoCarList(VinfoCar vinfoCar,long userId)
    {
        return vinfoCarMapper.selectVinfoCarList(vinfoCar,userId);
    }

    /**
     * 新增车辆信息
     *
     * @param vinfoCar 车辆信息
     * @return 结果
     */
    @Override
    public int insertVinfoCar(VinfoCar vinfoCar)
    {
        vinfoCar.setCreateTime(DateUtils.getNowDate());
        return vinfoCarMapper.insertVinfoCar(vinfoCar);
    }

    /**
     * 修改车辆信息
     *
     * @param vinfoCar 车辆信息
     * @return 结果
     */
    @Override
    public int updateVinfoCar(VinfoCar vinfoCar)
    {
        vinfoCar.setUpdateTime(DateUtils.getNowDate());
        return vinfoCarMapper.updateVinfoCar(vinfoCar);
    }

    /**
     * 批量删除车辆信息
     *
     * @param carIds 需要删除的车辆信息主键
     * @return 结果
     */
    @Override
    public int deleteVinfoCarByCarIds(Long[] carIds)
    {
        return vinfoCarMapper.deleteVinfoCarByCarIds(carIds);
    }

    /**
     * 删除车辆信息信息
     *
     * @param carId 车辆信息主键
     * @return 结果
     */
    @Override
    public int deleteVinfoCarByCarId(Long carId)
    {
        return vinfoCarMapper.deleteVinfoCarByCarId(carId);
    }

    /**
     * 获取设备No列表
     * @return
     */
    @Override
    public List<String> selectDeviceNos() {
        return vinfoCarMapper.selectDeviceNos();
    }

    /**
     * 获取所有车辆当前位置信息
     * @return
     */
    public List<CarLocationVo> selectAllCarLocations(long userId){
        return vinfoCarMapper.selectAllCarLocations(userId);
    }

    /**
     * 根据传入的carId查询车辆位置信息
     * @return
     */
    public List<CarLocationVo> selectCarLocations(List<Long> carIds){
        return vinfoCarMapper.selectCarLocations(carIds);
    }

    /**
     * 根据传入的deviceNo查询车辆位置信息
     * @return
     */
    public List<CarLocationVo> selectCarLocationByDeviceNo(String deviceNo){
        return vinfoCarMapper.selectCarLocationByDeviceNo(deviceNo);
    }

    /**
     * 查询车辆总数
     * @return
     */
    public long selectCountAll(){
        return vinfoCarMapper.selectCountAll();
    }

    /**
     * 分页查询车辆信息
     * @param begin
     * @param size
     * @return
     */
    public List<CarLocationVo> selectAllCarLocationsByPage(Long begin, Integer size){
        return vinfoCarMapper.selectAllCarLocationsByPage(begin,size);
    }

    /**
     * 通过车牌号查询线上车辆id
     * @param carNos
     * @return
     */
    public List<CarLocationVo> selectCarLocationsByCarNos(List<String> carNos){
        return vinfoCarMapper.selectCarLocationsByCarNos(carNos);
    }

    /**
     * 根据车牌号查询下拉框选项
     */
    public List<Map<String,Object>> getSelectItemsByUserId(long userId){
        return vinfoCarMapper.getSelectItemsByUserId(userId);
    }

    /**
     *根据用户id查询车辆位置信息
     */
    public List<CarLocationVo> selectCarLocationsByUnitAndPage(String userId, long begin, int size){
        return vinfoCarMapper.selectCarLocationsByUnitAndPage(userId,begin,size);
    }

    @Override
    public VinfoCar selectVinfoCarByDeviceNo(String deviceNo) {
        return vinfoCarMapper.selectVinfoCarByDeviceNo(deviceNo);
    }
}
